NFS 서버와 SAMBA 서버

✒️ 2025-05-22 15:23 내용 수정


NFS(Network File System) 서버

네트워크 상에서 파일 및 디렉터리를 공유하기 위한 프로토콜 및 시스템

서버 설정

  1. nfs 패키지를 yum install -y nfs-utils으로 다운 받는다.
    • 패키지에 서버와 클라이언트가 모두 포함되어 있다.

nfs 1.png

  1. rpm -aq | grep nfs로 패키지가 설치되었는지 확인한다.

nfs 2.png

  1. 서버의 설정 파일을 수정한다. (원본 파일은 빈 파일이다.)
    • vi /etc/exports에 공유할 디렉터리와 접근을 허가할 컴퓨터의 접근 권한을 설정한다.
    • 공유할디렉터리(tab)공유할아이피(옵션) 순서대로 작성한다.
      • tab은 키보드 tab
옵션 설명
rw 읽기(다운로드), 쓰기(업로드) 허용
ro 읽기(다운로드)만 허용
secoure 클라이언트에서 마운트 요청시 1024 포트 이하로 설정
root_squash 클라이언트가 마운트할 때 root 권한 차단
no_root_squash 클라이언트가 마운트할 때 root 권한 허용
sync 서버와 클라이언트간의 동기화 허용
all_squash root를 제외한 서버와 클라이언트의 권한을 동일하게 적용(user 계정으로)
no_all_squash root를 제외한 서버와 클라이언트의 권한을 통일(전원 guest로 통일)

nfs 3.png

  1. 공유할 디렉터리가 존재하지 않으면 mkdir 디렉터리로 생성해준다.
  2. 생성한 디렉터리에 chmod 707 디렉터리로 퍼미션을 설정한다.
    • 클라이언트로 접속해서 확인해보기 위해 1.txt라는 파일에 nfs test라고 작성해서 저장했다.

nfs 4.png
nfs 5.png

  1. systemctl start nfs-server로 서비스를 실행하고, systemctl enable nfs-server로 재부팅 옵션을 설정한다.
  2. systemctl status nfs-server로 현재 서비스의 작동 상태를 확인한다.

nfs 6.png

서버 관리

  1. exportfs -v : 공유 목록을 확인할 수 있다.

nfs 7.png

  1. exportfs -a : 데몬 재실행 없이 파일을 실시간으로 적용할 수 있다.
  2. exportfs -r : /etc/exports와 /etc/exports.d의 파일들을 읽어온다.
  3. exportfs -u 아이피주소:/디렉터리 : 지정한 폴더를 목록에서 제거한다.

클라이언트 설정

  1. 서버와 마찬가지로 nfs 패키지를 yum install -y nfs-utils으로 다운 받는다.
  2. showmount -e 서버아이피로 서버에 공유된 디렉터리 목록을 확인한다.

nfs 8.png

  1. 서버 공유 폴더와 마운트를 할 디렉터리를 mkdir 디렉터리로 생성한다.
  2. 서버 공유 폴더를 mount -t nfs 서버아이피:디렉터리경로 마운트포인트로 마운트한다.
  3. 마운트한 디렉터리로 이동하면 서버에서 테스트를 위해 만든 1.txt 파일을 확인할 수 있다.

nfs 9.png

  1. 이번엔 역으로 클라이언트에서 파일을 생성하고 서버에서 확인해본다. cat > client.text로 client mount success! 라는 문구를 저장했다.
  2. 서버 컴퓨터에서 cd /share로 이동해 해당 파일을 확인한다.
    • client.txt라는 파일에 아까 클라이언트에서 입력했던 내용을 확인할 수 있다.

nfs 10.png

  1. 다시 클라이언트 컴퓨터에서 마운트한 디렉터리 내의 1.txt 파일을 /home에 복사하면 서버에 있는 파일을 성공적으로 클라이언트 서버에 다운로드할 수 있다.

nfs 11.png

  1. 컴퓨터를 종료하면 마운트가 풀리기 때문에 자동 마운트를 걸어준다.
    • 하드디스크 추가#5. 자동 마운트 설정 참고.
    • 4번에서 mount -t nfs 서버아이피:디렉터리경로 마운트포인트로 걸었기 때문에 fstab에서 장치명은 서버아이피:디렉터리경로, 파일 시스템은 nfs이다.

nfs 13.png

  1. 확인을 위해 init 6로 재부팅한 후 cd 마운트포인트로 해당 디렉터리가 마운트된 걸 확인하거나, mount | grep 마운트포인트, df -h로 확인한다.

nfs 14.png


SAMBA 서버

Windows 운영체제와 Unix 및 Linux의 파일 및 프린터 공유를 할 때 주로 사용

Linux에서 Windows로 공유

1. Linux에서 작업(CentOS 7)

  1. samba 패키지들을 yum install -y samba samba-clinet samba-common cifs-utils 로 다운 받는다.

samba 1.png

  1. rpm -aq | grep sambarpm -aq | grep cifs로 패키지가 설치 되었는지 확인한다.

samba 2.png

  1. 공유할 디렉터리를 mkdir 디렉터리로 생성한 후 gedit /etc/samba/smb.conf로 SAMBA 설정 파일을 연다.
  2. 환경 설정을 원하는 대로 설정한다.
[공유이름]
	comment = 팝업용 주석
	path = 공유할 폴더 절대 경로
	force user = 접근 가능 사용자 지정(유저1 유저2)
	force group = 접근 가능 그룹 지정(그룹1 그룹2)
	valid users = 접근 가능 사용자 지정, 그룹으로 지정도 가능(유저1 @그룹1)
	read only = 읽기 전용 여부(yes/no)
	writeable = 쓰기 권한 여부(yes/no)
	public = 게스트 허용 여부(yes/no)
	browseable = 공유 리스트 출력 여부(yes/no)
	printable = 프린트 공유 여부(yes/no)
	guest ok = 기타 사용자 허용 여부(yes/no)
	write list = 쓰기 가능한 유저 지정(유저1 유저2)
	create mask = 파일 생성 시 부여되는 권한, 사용자 그룹 기타사용자
	directory mask = 폴더 생성 시 부여되는 권한, 사용자 그룹 기타사용자

samba24.png

  1. testparm으로 변경된 설정을 확인한다.

samba25.png

  1. systemctl start smb nmb로 서비스를 실행한다. 만약 실행중이라면 systemctl restart smb nmb으로 재시작한다.
  2. 퍼미션을 chmod -R 707 디렉터리로 설정하여 사용자가 접근할 수 있도록 한다.

samba21.png

  1. 윈도우에서 리눅스로 접근할 계정을 useradd 계정명으로 추가해준다.
  2. 반드시 passwd 계정명으로 비밀번호도 생성해준다.
  3. grep 계정명 /etc/passwd로 계정이 생성되었는지 확인한다.

samba 22.png

  1. SAMBA의 공유 계정을 생성해줘야 하기 때문에 /etc/passwd에 등록된 계정을 SAMBA 계정으로 설정해준다.
    • smbpasswd -a 계정명로 SAMBA 계정을 설정하고 SAMBA용 비밀번호도 등록한다.

samba 23.png

  1. SAMBA 서비스를 systemctl start nmbsystemctl start smb로 실행한다.

    • 만약 서비스들이 켜져 있는 상태라면 systemctl restart nmbsystemctl restart smb로 재실행한다.
  2. 공유 폴더에서 공유 테스트를 위해 cat > linux.txt로 linux to windows file sharing을 입력했다.

samba 24.png

2. window에서 작업

  1. 파일 탐색기에서 주소에 \\리눅스아이피\공유폴더를 입력하거나, 파일 탐색기에서 좌측 라이브러리에 네트워크에서 우클릭 - 네트워크 드라이브 연결을 선택한다.
    • 네트워크 드라이브 연결을 선택했다면 새로 뜨는 창에서 \\리눅스아이피\공유폴더를 입력한다.
    • 실습할 때 집에서 사용하는 컴퓨터로는 접속이 안됬었다. 그래서 윈도우 가상 머신을 따로 설치해서 리눅스와 동일한 게이트 웨이를 가지는 ip를 잡아서 연결했다.

samba27.png
samba28.png

  1. 리눅스에서 생성했던 SAMBA 계정의 아이디와 비밀번호를 입력한다. (리눅스에서 만든 사용자의 암호가 아니라 smbpasswd -a 사용자로 생성한 비밀번호다)

samba29.png

  1. 접속이 되었다면 파일 전송을 확인하기 위해 테스트용 파일을 만든다.

samba30.png

  1. 리눅스에서 해당 파일이 생성된 것을 확인할 수 있다.

samba31.png


Windows에서 Linux로 공유

1. window에서 작업

  1. 윈도우에서 공유할 폴더를 선택해서 우클릭 - 속성을 선택한다.
    samba 3.png

  2. 속성 메뉴 중에서 공유 - 암호 보호 - 네트워크 및 공유 센터를 선택한다.

samba 4.png

  1. 모든 네트워크 설정을 다음과 같이 변경한다.
    • 공용 폴더 공유 : 1번 항목
    • 파일 공유 연결 : 1번 항목
    • 암호로 보호된 공유 : 2번 항목
    • 모두 설정이 되었다면 변경 내용 저장을 누른다.

samba 5.png

  1. 다음은 공유 메뉴에서 네트워크 파일 및 폴더 공유 - 공유를 선택한다.

samba 6.png

  1. 이름으로 Everyone을 선택하거나 화살표를 눌러 나온 항목 중 Everyone을 선택하고 추가 버튼을 누른다.

samba 7.png

  1. Everyone의 사용 권한을 원하는 대로 선택한다. 실습을 위해 읽기/쓰기를 선택했다.
  2. 선택이 완료되었다면 공유 버튼을 누르고, 폴더가 공유되었다는 창이 뜨면 완료 버튼을 누른다.

samba 8.png
samba 9.png

  1. 이번엔 공유 메뉴에서 고급 공유를 선택한다.

samba 10.png

  1. 선택한 폴더 공유 체크박스를 선택하고, 공유 이름에 공유하려는 폴더 이름이 맞는지 확인한다.
  2. 권한 버튼을 눌러 공유할 사용자의 사용 권한을 설정한 후 적용 버튼 - 확인 버튼을 누른다.
    • 6)번에서 선택한 권한대로 수정한다.

samba 11.png
samba 12.png

  1. 적용 버튼 - 확인 버튼을 누르면 폴더의 공유 설정이 완료된다.

samba 13.png

  1. 이번엔 명령 프롬프트(cmd)를 열어 ipconfig로 윈도우 아이피를 확인한다. 이는 리눅스에서 접근할 때 사용할 예정이다.

samba 15.png

  1. 리눅스에서 윈도우에 접근하려면 사용자가 필요하므로 사용자를 net user root 비밀번호 /add로 추가한다.
    • cmd가 관리자의 권한으로 실행된 상태여야만 해당 명령어가 작동한다. cmd를 열기 전에 우클릭을 눌러 자세히 보기 - 관리자의 권한으로 실행을 선택해서 cmd를 연다
    • 사용자 제거할 땐 net user 유저명 /del 을 사용한다.

samba 16.png

2. Linux에서 작업(CentOS 7)

  1. 서버 구축 때 samba-client 패키지도 함께 설치했다.
    • 만약 클라이언트 패키지가 없다면 yum install -y samba samba-clinet samba-common cifs-utils 로 다운 받는다.
    • 패키지가 설치 되었는지 rpm -aq | grep samba로 확인한다.
  2. 공유 폴더를 마운트할 디렉터리를 mkdir 디렉터리로 만든다.

samba 14.png

  1. smbclient -L //윈도우아이피로 윈도우 컴퓨터에서 공유한 폴더 목록을 확인한다. 이 때 Enter SAMBA\root's password가 뜨는데, 이는 윈도우에서 만든 root 사용자의 비밀번호를 말한다. NFS 서버와 SAMBA 서버#1. window에서 작업의 13)번에서 만든 비밀번호를 입력하면 공유 목록 폴더를 확인할 수 있다.

samba 17.png

  1. mount -t cifs //윈도우아이피/공유폴더이름 마운트포인트로 윈도우 공유 폴더를 리눅스에 마운트한다.

    • 윈도우 폴더에 있던 파일을 확인할 수 있다.
      samba 18.png
  2. 윈도우 공유 폴더로 파일 업로드가 되는지 확인해본다. cat > linux.txt로 linux file share success!를 입력한 후, 윈도우 공유 폴더에서 파일을 확인한다.

samba 19.png
samba 20.png